package com.epam.tcs.dao.factory;

import com.epam.tcs.dao.hibernate.impl.UniversalDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.entities.Group;
import com.epam.tcs.dao.hibernate.entities.JournalLectureStatus;
import com.epam.tcs.dao.hibernate.entities.JournalPracticeStatus;
import com.epam.tcs.dao.hibernate.entities.Lecture;
import com.epam.tcs.dao.hibernate.entities.LectureStatus;
import com.epam.tcs.dao.hibernate.entities.Practice;
import com.epam.tcs.dao.hibernate.entities.PracticeStatus;
import com.epam.tcs.dao.hibernate.entities.Program;
import com.epam.tcs.dao.hibernate.entities.Student;
import com.epam.tcs.dao.hibernate.entities.Theme;

public class UniversalHibernateDAOFactory extends DAOFactory {

	@Override
	public DAO<Student> getStudentDAO() {
		return new UniversalDAOHibernateImpl<Student>(Student.class);
	}

	@Override
	public DAO<Group> getGroupDAO() {
		return new UniversalDAOHibernateImpl<Group>(Group.class);
	}

	@Override
	public DAO<Program> getProgramDAO() {
		return new UniversalDAOHibernateImpl<Program>(Program.class);
	}

	@Override
	public DAO<Theme> getThemeDAO() {
		return new UniversalDAOHibernateImpl<Theme>(Theme.class);
	}

	@Override
	public DAO<Lecture> getLectureDAO() {
		return new UniversalDAOHibernateImpl<Lecture>(Lecture.class);
	}

	@Override
	public DAO<Practice> getPracticeDAO() {
		return new UniversalDAOHibernateImpl<Practice>(Practice.class);
	}

	@Override
	public DAO<JournalLectureStatus> getJournalLectureStatusDAO() {
		return new UniversalDAOHibernateImpl<JournalLectureStatus>(JournalLectureStatus.class);
	}

	@Override
	public DAO<JournalPracticeStatus> getJournalPracticeStatusDAO() {
		return new UniversalDAOHibernateImpl<JournalPracticeStatus>(JournalPracticeStatus.class);
	}

	@Override
	public DAO<LectureStatus> getLectureStatusDAO() {
		return new UniversalDAOHibernateImpl<LectureStatus>(LectureStatus.class);
	}

	@Override
	public DAO<PracticeStatus> getPracticeStatusDAO() {
		return new UniversalDAOHibernateImpl<PracticeStatus>(PracticeStatus.class);
	}

}
